package com.ni.learning.exam.service;

import com.ni.learning.exam.dto.EnterExamDTO;
import com.ni.learning.exam.dto.ExamDTO;
import com.our.learning.infrastructure.pojo.Response;

/**
 * @author : Ice'Clean
 * @date : 2023-06-07
 */
public interface ExamService {

    /**
     * 根据考试 ID 查询考试详情
     * @param examId 考试 ID
     * @return 考试详情
     */
    Response getExam(int examId);

    /**
     * 创建一个考试
     * @param examDTO 考试数据
     * @return 考试 ID
     */
    Response createExam(ExamDTO examDTO);

    /**
     * 修改考试信息
     * @param examDTO 发生修改的考试信息
     * @return 是否修改成功
     */
    Response modifyExam(ExamDTO examDTO);

    /**
     * 删除一个考试
     * @param examId 考试 ID
     * @return 是否删除成功
     */
    Response deleteExam(int examId);

    /**
     * 学生获取考试列表
     * @param studentId 学生 ID
     * @param page 页数
     * @param perPage 每页数量
     * @return 考试列表
     */
    Response studentExamList(int studentId, int page, int perPage);

    /**
     * 老师获取考试列表
     * @param teacherId 老师 ID
     * @param page 页数
     * @param perPage 每页数量
     * @return 考试列表
     */
    Response teacherExamList(int teacherId, int page, int perPage);

    /**
     * 学生进入考试请求
     * @param enterExamDTO 进入考试信息
     * @param isTeacher 是否为教师
     * @return 分配答卷
     */
    Response enterExam(EnterExamDTO enterExamDTO, boolean isTeacher);

    /**
     * 公布考试结果
     * @param examId 考试 ID
     * @return 公布反馈
     */
    Response publishResult(int examId);
}
